home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / EXPR11.ARJ / PARSE.C < prev    next >
C/C++ Source or Header  |  1992-02-26  |  1KB  |  56 lines

  1. #include <expr.h>
  2.  
  3. char vars[3]={'x', 'y', 'z'};
  4. double varvals[3]={1.0, 1.0, 1.0};
  5.  
  6. main(int argc, char *argv[])
  7. {
  8.    Expr *expr, *dx, *dy, *dz;
  9.    char *unparse;
  10.    char string[128];
  11.    double val;
  12.  
  13.    if (argc<2) {
  14.       printf("Usage: parse <f(x,y,z)>\n");
  15.       exit(-1);
  16.    }
  17.    if ((expr=ParseExpr(argv[1], 3, vars)) == NULL) {
  18.       printf("Error parsing: %s\n", Expr_errstr);
  19.       exit(-1);
  20.    }
  21.    unparse=UnParseExpr(expr);
  22.    printf("parsed equation: %s\n",unparse);
  23.    free(unparse);
  24.  
  25.    SimpExpr(expr);
  26.    unparse=UnParseExpr(expr);
  27.    printf("simplified: %s\n",unparse);
  28.    free(unparse);
  29.  
  30.    dx=DiffExpr(expr, 0);
  31.    SimpExpr(dx);
  32.    unparse=UnParseExpr(dx);
  33.    printf("dx: %s\n",unparse);
  34.    free(unparse);
  35.  
  36.    dy=DiffExpr(expr, 1);
  37.    SimpExpr(dy);
  38.    unparse=UnParseExpr(dy);
  39.    printf("dy: %s\n",unparse);
  40.    free(unparse);
  41.  
  42.    dz=DiffExpr(expr, 2);
  43.    SimpExpr(dz);
  44.    unparse=UnParseExpr(dz);
  45.    printf("dz: %s\n",unparse);
  46.    free(unparse);
  47.  
  48.    val=EvalExpr(expr, varvals);
  49.    printf("f(%.6g,%.6g,%.6g)=%.6g\n",varvals[0],varvals[1],varvals[2],val);
  50.    
  51.    FreeExpr(expr);
  52.    FreeExpr(dx);
  53.    FreeExpr(dy);
  54.    FreeExpr(dz);
  55. }
  56.